package net.sf.rose.file.util.resource; 

import java.io.File;

import org.apache.log4j.Logger;
import org.simpleframework.xml.Serializer;
import org.simpleframework.xml.core.Persister;

/** 
 * 类说明：利用simpleframework组件读写XML文件
 * @author fengjian E-mail: 9110530@qq.com 
 * @version 创建时间：2015年9月30日 上午9:59:45 
 */
public class ResourceXmlFile {

	private static Logger LOG = Logger.getLogger(ResourceXmlFile.class);

	/** 配置文件路径对象 */
	private File file = null;

	/** 配置文件对象 */
	private Object root = null;

	/**
	 * 设置文件对象
	 * @param file 文件对象
	 */
	public void setFile(File file) {
		this.file = file;
	}

	/**
	 * 获取文件对象
	 * @return 文件对象
	 */
	public File getFile() {
		return file;
	}

	/**
	 * 将所有数据读入内存
	 * @param entity 数据格式对象
	 * @param file 文件对象
	 * @return 数据读入是否成功
	 */
	public boolean load(Class<?> entity, File file) {
		this.file = file;
		if (!file.exists()) {
			LOG.error("配置文件：" + file.getAbsolutePath() + "不存在！");
			return false;
		}
		try {
			Serializer serializer = new Persister();
			root = serializer.read(entity, file);
			LOG.error("成功读取配置文件：" + file.getAbsolutePath() + "...");
			return true;
		} catch (Exception e) {
			LOG.error("读取配置文件：" + file.getAbsolutePath() + "，时发生错误！", e);
		}
		return false;
	}

	/**
	 * 保存
	 * @return 是否成功
	 */
	public boolean save() {
		try {
			Serializer serializer = new Persister();
			serializer.write(root, file);
			LOG.error("成功保存配置文件：" + file.getAbsolutePath() + "...");
			return true;
		} catch (Exception e) {
			LOG.error("保存配置文件：" + file.getAbsolutePath() + "，时发生错误。", e);
		}
		return false;
	}

	/**
	 * 获取根对象
	 * @return 根对象
	 */
	public Object getAll() {
		return root;
	}

	/**
	 * 设置根对象
	 * @param all 根对象
	 */
	public void setAll(Object all) {
		root = all;
	}

}
